
ubuntu:详细介绍，重点推荐使用
    链接：https://www.zhihu.com/question/30816866/answer/153948993
    我也来回答一波：本人大三，面临毕业与找工作，给自己定的方向是python，目前
    刚刚入门，16年末狠下心来，卸了windows10，装了ubuntu16，感觉整个世界都清净了，更加专注于学习，ubuntu真的使我的学习效率和热情提
    高了不少，为数不多的日子，希望自己能变得更强吧。

    链接：https://www.zhihu.com/question/30816866/answer/97994549
    > 从没接触过的新手学Linux，把日常工作的电脑从win转到Ubuntu是否合理？答：不合理，学习都是循序渐进的。不要直接切换，
    推荐先在Windows中的虚拟机中跑Ubuntu，然后再玩双启动（Windows+Ubuntu），最后才是单系统Ubuntu。
    > 都有哪些坑？答：以下只谈日常工作相关。坑是自己错误使用Linux造成的，Linux不是Windows的替代品，同样的，深蓝的性能再
    好，也运行不了孤岛危机。- 没有MS Office，所有的替代品都会出现格式问题。结果就是影响工作效率，比如客户发来的文档在你
    的电脑上显示是乱的，或者客户看你的文档时候格式是乱的。- 没有客户端QQ，和客户沟通不方便；使用Web QQ，但是bug多
    ，功能少。- 公司需要使用A软件，但是A软件只有Windows版。
    最后再附赠一个解决方案：做任何事情都是有目的的，“我要切换到Linux”是结果，不是目的。所以请分析一下的正确和错误的逻辑，然后
    找到自己的目的/目标吧。
    正确的逻辑：- Windows下的batch好难用！咦，Linux下Shell真强大，还附赠了Python，竟然还有Perl。我好想切换到Lin
    ux下，因为这些工具会极大的提升我的工作效率。- 我正在学习C语言，刚好看到几个优秀的开源项目，代码都值得学习，那就先
    编译一下吧，咦，怎么只有Makefile？我还是切换到Linux下学习吧。
    错误的逻辑：- Linux看起来好高端啊，我也装一个来玩玩。哇！3D桌面真炫，我想一直使用这个桌面。  - 我现在想看电影了，需要装一个
    播放器。Linux下的播放器真难用。  - 我现在想玩游戏了，需要装一个xx游戏。Linux玩不了xx游戏，真垃圾。编辑于 2016-04-29


clion  之前在windows上用很卡，现在linux速度正常


PHP源码下载




常用代码：
  #define ZEND_FN(name) zif_##name
    在C语言的宏中，"##"被称为 连接符（concatenator），它是一种预处理运算符， 用来把两个语言符号(Token)组合成单个语言符号。
  #define STR(x) #x
    "#"是一种预处理运算符，它的功能是将其后面的宏参数进行 字符串化操作 ， 简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号， 用比较官方的话说就是将语言符号(Token)转化为字符串


  //宏定义中的do-while循环
  #define ALLOC_ZVAL(z)
  do {
      (z) = (zval*)emalloc(sizeof(zval_gc_info));
      GC_ZVAL_INIT(z);
  } while (0)


  `#line 838 "Zend/zend_language_scanner.c"`
  #line 预处理  通过这条指令， 可以保证文件名是固定的，不会被C 源码编译过程中会产生一些中间文件代替，有利于进行调试分析。


  #ifdef ZTS   // 编译时开启了线程安全则使用线程安全库
    # define PG(v) TSRMG(core_globals_id, php_core_globals *, v)
    extern PHPAPI int core_globals_id;
  #else
    # define PG(v) (core_globals.v) // 否则这其实就是一个普通的全局变量
    extern ZEND_API struct _php_core_globals core_globals;
  #endif
  全局变量为一个结构体 _php_core_globals，这个全局变量很大一部分是与php.ini文件中的配置项对应的






php-744.1.4
├── appveyor
├── build   //源码编译相关文件
└── ext     //官方扩展目录，包括了绝大多数PHP的函数的定义和实现
└── main    //PHP核心基本文件，这里和Zend引擎不一样，Zend引擎主要实现语言最核心的语言运行环境。
└── netware
└── pear    //“PHP 扩展与应用仓库”，包含PEAR的核心文件。
└── sapi    //包含了各种服务器抽象层的代码，例如apache的mod_php，cgi，fastcgi以及fpm等等接口。
└── scripts
└── tests   //PHP的测试脚本集合，包含PHP各项功能的测试文件
└── travis
└── TSRM    //PHP的线程安全是构建在TSRM库之上的，PHP实现中常见的*G宏通常是对TSRM的封装，TSRM(Thread Safe Resource Manager)线程安全资源管理器。
└── win32   //Windows平台相关的一些实现，比如sokcet的实现在Windows下和*Nix平台就不太一样，同时也包括了Windows下编译PHP相关的脚本。
└── Zend    //Zend引擎的实现目录，比如脚本的词法语法解析，opcode的执行以及扩展机制的实现等等。
    ├── RFCS
    ├── tests
    └── ...
└── .appveyor.yml
└── .editorconfig
└── .gdbinit        //gdb命令编写脚本   (gdb) source /home/laruence/package/php-5.2.14/.gdbinit       (gdb) zbacktrace
└── .gitignore
└── .travis.yml
└── acinclude.m4
└── aclocal.m4
└── buildconf
└── buildconf.bat
└── CODING_STANDARDS  //PHP编码标准
└── config.guess  //由automake产生，两个用于目标平台检测的脚本
└── config.log    //configure执行时生成的日志文件
└── config.nice   //configure执行时生成,记录了上次执行configure时带的详细参数
└── config.status //configure执行时生成,实际调用编译工具构建软件的shell脚本
└── config.sub    //由automake产生，两个用于目标平台检测的脚本
└── configure     //配置并生成makefile
└── configure.in  //autoreconf创建，开发者维护，用于生成configure
└── CONTRIBUTING.md
└── CREDITS   //开发人员名单
└── EXTENSIONS  //扩展说明(维护状态，维护人员，版本，适用系统..)
└── footer
└── generated_lists
└── genfiles
└── header
└── INSTALL
└── install-sh
└── LICENSE   //发布协议
└── ltmain.sh
└── makedist
└── Makefile.frag
└── Makefile.gcov
└── Makefile.global
└── makerpm
└── missing
└── mkinstalldirs
└── NEWS
└── php.gif
└── php.ini-development //PHP开发环境示例配置文件
└── php.ini-production  //PHP生产环境示例配置文件
└── php7.spec.in
└── README.EXT_SKEL   //构建扩展脚本说明
└── README.GIT-RULES  //GIT提交时的规则
└── README.input_filter
└── README.MAILINGLIST_RULES
└── README.md
└── README.namespaces   //命名空间说明
└── README.NEW-OUTPUT-API
└── README.PARAMETER_PARSING_API  //新的参数解析函数说明
└── README.REDIST.BINS      //PHP中引用到的其它程序协议说明
└── README.RELEASE_PROCESS  //PHP发布过程说明
└── README.SELF-CONTAINED-EXTENSIONS  //创建一个内建的PHP扩展
└── README.STREAMS    //PHP Streams(流概念) 说明
└── README.SUBMITTING_PATCH   //介绍如何提交PHP的增强功能或修补程序
└── README.TESTING  //测试说明(run-tests.php)
└── README.TESTING2 //测试说明(server-tests.php)
└── README.UNIX-BUILD-SYSTEM  //PHP编译系统V5概述
└── README.WIN32-BUILD-SYSTEM //WIN32编译说明
└── run-test.php    //测试脚本
└── server-test.php //测试脚本
└── sesrver-test-config.php //测试脚本
└── snapshot
└── stamp-h.in
└── stub.c
└── UPGRADING   //版本更新说明
└── UPGRADING.INTERNALS //内部更新说明
└── vcsclean








































 。
